﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AMS.Core.Math
{
    // take ints, doubles, and other number values
    public abstract class Equation<T> where T : IConvertible //Numeric
    {
        #region Substrings
        private string _add = "+";
        public string Add
        {
            get { return _add; }
            set
            {
                // TODO: Some check logic
                _add = value;
            }
        }
                
        private string _subtract = "-";
        public string Subtract
        {
            get { return _subtract; }
            set
            {
                // TODO: Some check logic
                _subtract = value;
            }
        }

        private string _multiply = "*";
        public string Multiply
        {
            get { return _multiply; }
            set
            {
                // TODO: Some check logic
                _multiply = value;
            }
        }

        private string _divide = "/";
        public string Divide
        {
            get { return _divide; }
            set
            {
                // TODO: Some check logic
                _divide = value;
            }
        }

        private string _modulus = "%";
        public string Modulus
        {
            get { return _modulus; }
            set
            {
                // TODO: Some check logic
                _modulus = value;
            }
        }

        private string _power = "^";
        public string Power
        {
            get { return _power; }
            set
            {
                // TODO: Some check logic
                _power = value;
            }
        }

        private string _log = "log()";
        public string Log
        {
            get { return _log; }
            set
            {
                // TODO: Some check logic
                _log = value;
            }
        }

        private string _abs = "abs()"; //"|";
        public string AbsoluteValue
        {
            get { return _abs; }
            set
            {
                // TODO: Some check logic
                _abs = value;
            }
        }
        #endregion Substrings

        // TODO: IntegralEquation
        // TODO: Integrate(T start, T end)
        // TODO: GetDerivative()
        // TODO: GetAntiDerivate(T const)
    }
}
